package com.solution.admin.point.service;

import java.util.List;
import java.util.Map;

import com.solution.admin.point.entity.PointMonthEntity;
import com.solution.admin.point.entity.PointMonthModifyEntity;
import com.solution.common.page.PageBean;
import com.solution.common.page.PageParam;

/**
 * 月度积分统计信息接口service接口层
 * 
 * @author xu_cc
 * @date 2017-10-20 14:21:47
 */
public interface PointMonthService {

	/**
	 * 保存月度积分统计信息
	 * 
	 * @param pointMonthEntity
	 *            月度积分统计信息实体
	 * @return Long 返回插入月度积分统计信息记录ID
	 * @author xu_cc
	 * @date 2017-10-20 14:21:47
	 */
	public long savePointMonth(PointMonthEntity pointMonthEntity);

	/**
	 * 获取指定月份的积分统计信息
	 * 
	 * @param month
	 * @return List<PointMonthEntity>
	 * @author xu_cc
	 * @throws Exception
	 *             exception
	 * @Date 创建时间：2017年10月25日 下午5:43:12
	 */
	public List<PointMonthEntity> getPointByMonth(String month);

	/**
	 * 先删除指定月份信息，然后再批量插入
	 * 
	 * @param list
	 * @return int
	 * @author xu_cc
	 * @throws Exception
	 *             exception
	 * @Date 创建时间：2017年10月25日 下午5:58:18
	 */
	public int insertList(String month, List<PointMonthEntity> list);

	/**
	 * 删除指定月份的所有月度积分统计信息
	 * 
	 * @param id
	 * @return
	 * @author xu_cc
	 * @date 2017-10-20 14:21:47
	 */
	public int deleteByMonth(String month);

	/**
	 * 根据ID查询月度积分统计信息
	 * 
	 * @param id
	 *            月度积分统计信息id
	 * @return PointMonthEntity 月度积分统计信息对象
	 * @author xu_cc
	 * @date 2017-10-20 14:21:47
	 */
	public PointMonthEntity getPointMonthById(Long id);

	/**
	 * 更新月度积分统计信息
	 * 
	 * @param PointMonthEntity
	 *            月度积分统计信息对象
	 * @return int 更新是否成功，>1代表更新成功
	 * @author xu_cc
	 * @date 2017-10-20 14:21:47
	 */
	public int updatePointMonth(PointMonthEntity pointMonthEntity);

	/**
	 * 分页查询月度积分统计信息
	 * 
	 * @param pageParam
	 *            分页参数
	 * @param paramMap
	 *            查询参数
	 * @return PageBean 分页参数和分页数据
	 * @author xu_cc
	 * @date 2017-10-20 14:21:47
	 */
	public PageBean listPointMonthPage(PageParam pageParam, Map<String, Object> paramMap);

	/**
	 * 根据条件查询月度积分统计信息
	 * 
	 * @param param
	 * @return 月度积分统计信息列表
	 * @author xu_cc
	 * @date 2017-10-20 14:21:47
	 */
	public List<PointMonthEntity> listPointMonth(Map<String, Object> param);

	/**
	 * 每月月初根据指定月份生成期初积分信息
	 * 
	 * @param month
	 * @return int
	 * @author xu_cc
	 * @throws Exception
	 *             exception
	 * @Date 创建时间：2017年10月25日 下午6:48:39
	 */
	public int insertMonthBegin(String month);

	/**
	 * 确认月度积分修改信息，更新到当前系统中
	 * @param userCode
	 * @return int    
	 * @author xu_cc  
	 * @throws Exception exception
	 * @Date 创建时间：2017年12月1日 上午10:28:25
	 */
	public int doConfirmMonthModify(Map<String, Object> param) throws Exception;
	
	/**
	 * 获取月度积分调整列表
	 * 
	 * @param param
	 * @return List<PointMonthModifyEntity>
	 * @author xu_cc
	 * @throws Exception
	 *             exception
	 * @Date 创建时间：2017年12月1日 上午10:24:35
	 */
	public List<PointMonthModifyEntity> listMonthModifyList(Map<String, Object> param);

	/**
	 * 保存月度积分调整
	 * 
	 * @param monthModify
	 * @return Long
	 * @author xu_cc
	 * @throws Exception
	 *             exception
	 * @Date 创建时间：2017年12月1日 上午10:26:14
	 */
	public Long saveMonthModify(PointMonthModifyEntity monthModify);
	
	
	/**
	 * 查询月度积分确认状态
	 * @param param
	 * @return
	 */
	public PointMonthModifyEntity selectPointMonthConfirmStatus(Map<String, Object> param);
}
